伤害对象
伤害结算的说明见这里。
创建
使用[attack:add_damage]或[skill:add_damage]来创建 一个伤害对象,并立即结算此伤害。
skill:add_damage
{
source = source,
target = target,
damage = 100,
}
属性
属性可以在创建时传入。
source
来源
伤害的来源(unit)。
target
目标
伤害的目标(unit)。
skill
关联技能
如果伤害是通过[attack:add_damage]创建的,那么关联技能即为attack
。如果伤害是通过[skill:add_damage]创建的,那么关联技能即为skill
。
damage
伤害值
类型为(number)。这个属性应该在创建时传入。
current_damage
当前伤害值
类型为(number)。该属性会初始化为伤害,之后你可以修改当前伤害,最终会使用当前伤害来扣除生命。
angle
伤害方向
类型为(number)。客户端会根据伤害方向决定受击特效的方向。如果不填,则会使用[来源]到[目标]的方向。
自定义属性
你可以在创建时给伤害添加任何自定义的属性(当然不能重名),之后便可以从伤害对象中将其读出,以便实现自定义功能。
事件
一次伤害流程会触发若干[全局事件],这些事件按照以下顺序依次触发:
伤害初始化
- 事件对象
- damage (damage) - 伤害对象
- 事件参数
- damage (damage) - 伤害对象
用于实现[法球]。使用触发器接收事件:
damage:event('伤害初始化', function (trg, damage)
-- 你的代码
end)
造成伤害开始
- 事件对象
- source (unit) - 伤害来源
- 事件参数
- damage (damage) - 伤害对象
在事件中返回false
可以阻止本次伤害。使用触发器接收事件:
source:event('造成伤害开始', function (trg, damage)
-- 返回false以阻止伤害
return false
end)
受到伤害开始
- 事件对象
- target (unit) - 伤害目标
- 事件参数
- damage (damage) - 伤害对象
在事件中返回false
可以阻止本次伤害。使用触发器接收事件:
target:event('受到伤害开始', function (trg, damage)
-- 返回false以阻止伤害
return false
end)
造成伤害
- 事件对象
- source (unit) - 伤害来源
- 事件参数
- damage (damage) - 伤害对象
此时[护甲]等效果已经结算完毕。使用触发器接收事件:
target:event('造成伤害', function (trg, damage)
-- 你的代码
end)
受到伤害
- 事件对象
- target (unit) - 伤害目标
- 事件参数
- damage (damage) - 伤害对象
此时[护甲]等效果已经结算完毕。使用触发器接收事件:
target:event('受到伤害', function (trg, damage)
-- 你的代码
end)
伤害前效果
- 事件对象
- damage (damage) - 伤害对象
- 事件参数
- damage (damage) - 伤害对象
用于实现[法球]。使用触发器接收事件:
damage:event('伤害前效果', function (trg, damage)
-- 你的代码
end)
方法
get_angle
获取伤害方向
如果创建时传入了[angle]属性,则返回该值。否则,返回当前[来源]的位置到[目标]位置的方向。
get_damage
获取伤害值
返回伤害值。
get_current_damage
获取当前伤害值
返回当前伤害值。[护甲]或用户可以在[伤害事件]中修改伤害值。